Fox's Git Mirrors
README-RU.md 8a2c20df0bdd47339b81dfd39aebd3711ee83bed (8a2c20df) Text, 8.14 KB
RNS-over-HTTP
Интерфейс Reticulum, который туннелирует трафик через стандартные HTTP/S POST-запросы. Это позволяет Reticulum работать в сетях, где разрешён только веб-трафик, эффективно обходя файрволы, DPI и другие ограничения.
Не-GitHub-зеркало. Кроме того, файлы проекта (скрипт интерфейса и инструкция) доступны в сети Reticulum по адресу T383838RNS-over-HTTP.
Обзор
RNS-over-HTTP создаёт двунаправленный транспортный уровень, используя простую клиент-серверную модель:
• Сервер: Запускается на машине с публичным IP-адресом и прослушивает HTTP-запросы.
• Клиент: Может находиться за файрволом или NAT, ему требуется только исходящий доступ в интернет.
Клиент опрашивает сервер с помощью HTTP POST-запросов, отправляя любые исходящие данные в теле запроса и получая входящие данные в теле ответа. Это делает трафик похожим на обычную веб-активность.
Как это работает
Интерфейс имитирует постоянное соединение, используя механизм, подобный long-polling:
1. Клиент отправляет HTTP POST-запрос на сервер, помещая все ожидающие данные в тело запроса.
2. Сервер получает запрос. Он обрабатывает данные от клиента и немедленно отправляет обратно любые данные, находящиеся в очереди для клиента, в теле HTTP-ответа.
3. Клиент получает ответ и обрабатывает данные.
4. После короткого настраиваемого интервала опроса клиент повторяет процесс.
Этот непрерывный цикл создаёт надёжный, хотя и с более высокой задержкой, канал связи.
Особенности
• Обход файрволов и DPI: Туннелирует любой трафик через стандартные порты HTTP/S (80/443).
• Двунаправленная связь: Полнодуплексная передача данных.
• Простая настройка: Никаких сложных зависимостей, только Python и T383838requests.
• Надёжность: Автоматическое повторное подключение с экспоненциальной задержкой.
• Гибкость: Поддерживает пользовательские размеры MTU и настраиваемые интервалы опроса.
• Совместимость с прокси: Бесшовно работает за обратными прокси-серверами, такими как Caddy или Nginx.
Начало работы
Требования
• Python 3.9 или новее
• T383838pip для установки пакетов
Установка
1. Установите библиотеку T383838requests, если она ещё не установлена:
T282828
pip install requests
2. Скачайте скрипт интерфейса: Разместите T383838http_interface.py в известном месте на клиентской и серверной машинах, например, в T383838~/.reticulum/interfaces/.
Конфигурация
Настройте T383838PipeInterface в вашем файле T383838~/.reticulum/config как на сервере, так и на клиенте.
Конфигурация сервера
Сервер прослушивает входящие подключения от клиентов.
T282828
[[HTTP Interface]]
type = PipeInterface
enabled = True
# Команда для запуска серверного скрипта. По умолчанию прослушивает все интерфейсы.
command = python3 /path/to/your/http_interface.py server --host 0.0.0.0 --port 8080
# Необязательно: задержка перед перезапуском интерфейса в случае сбоя.
respawn_delay = 5
name = HTTP Interface Server
Конфигурация клиента
Клиент подключается к публичному URL-адресу сервера.
T282828
[[HTTP Interface]]
type = PipeInterface
enabled = True
# Команда для запуска клиентского скрипта. Укажите в --url адрес вашего сервера.
command = python3 /path/to/your/http_interface.py client --url http://<your-server-ip-or-domain>
# Необязательно: задержка перед перезапуском интерфейса в случае сбоя.
respawn_delay = 5
name = HTTP Interface Client
Параметры командной строки
Вы можете настроить поведение скрипта с помощью этих аргументов:
• T383838--mtu: Максимальный размер пакета (Maximum Transmission Unit) в байтах (по умолчанию: T3838384096).
• T383838--poll-interval: Интервал опроса клиента в секундах (по умолчанию: T3838380.1).
• T383838--verbose или T383838-v: Включить подробное отладочное журналирование.
• T383838--host: Хост для прослушивания сервером (по умолчанию: T3838380.0.0.0).
• T383838--port: Порт для прослушивания сервером (по умолчанию: T3838388080).
• T383838--disable-user-agent-check: Отключить проверку User-Agent на сервере.
Настройка обратного прокси-сервера (пример для Caddy)
Поддомен
T282828
# Caddyfile для example.yourdomain.com
example.yourdomain.com {
reverse_proxy 127.0.0.1:8080
header {
# Скрыть версию серверного ПО
-Server
# Запретить анализ MIME-типа
X-Content-Type-Options nosniff
}
}
Основной домен
T282828
yourdomain.com {
reverse_proxy 127.0.0.1:8080
header {
# Скрыть версию серверного ПО
-Server
# Запретить анализ MIME-типа
X-Content-Type-Options nosniff
}
}
Соображения по безопасности
• Используйте HTTPS: Это помогает обойти некоторые файрволы и DPI, которые потенциально могут видеть данные Reticulum.
• Проверка User-Agent: По умолчанию сервер проверяет заголовок T383838User-Agent (T383838RNS-HTTP-Tunnel/1.0). Это обеспечивает базовую защиту от веб-сканеров и случайного сканирования. Если вам нужно обойти сложные системы DPI, вы можете изменить этот заголовок в скрипте, чтобы имитировать обычный браузер, и отключить проверку на сервере (T383838--disable-user-agent-check).
Served by rngit 1.4.1 - Generated in 0.03s